[小ネタ]RedshiftへParquetファイルをCOPY文でロードする際の認証設定
はじめに
こんにちは。DI部の大高です。
最近RedshiftへParquetファイルをCOPY文でロードする機会があったのですが、IAM_ROLE以外を認証パラメータに利用した際にエラーになったのでご紹介したいと思います。
COPY文について
ReshiftへCOPY文を発行する際には、AWSのドキュメントにある通り、以下のような構文となります。
COPY table-name [ column-list ] FROM data_source authorization [ [ FORMAT ] [ AS ] data_format ] [ parameter [ argument ] [, ... ] ]
この構文に従ってParquetファイルをCOPYする場合、具体的には以下のようなクエリとなります。
COPY listing FROM 's3://mybucket/data/listings/parquet/' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' FORMAT AS PARQUET;
認証情報の設定について
Parquetファイルフォーマット(列データ形式)の場合、以下のドキュメントに記載のとおり、認証情報にはIAM Roleを指定する必要があります。(2019/05現在)
COPY コマンドの認証情報は、IAM_ROLE パラメータまたは CREDENTIALS パラメータの引数として AWS Identity and Access Management (IAM) ロールを使用して指定する必要があります。
列データ形式の COPY - Amazon Redshift
実際に、以下のようなクエリを実行したところエラーとなりました。
COPY listing FROM 's3://mybucket/data/listings/parquet/' ACCESS_KEY_ID '<access-key-id>' SECRET_ACCESS_KEY '<secret-access-key>' FORMAT AS PARQUET;
Invalid operation: COPY from this file format only accepts IAM_ROLE credentials
まとめ
ParquetファイルをCOPY文でロードする際にはIAM Roleを指定しましょう。それでは!